Soru & Cevap

Andriod Studio uygulamasından veritabanına veri gönderme

13.10.2016 - 09:36

Merhaba,

Sony Smart EyeGlass için bir uygulama geliştiriyorum. Bu uygulama kapsamında local ağda yayınlanan bir ip adresinden verileri çekebiliyorum istediğim şekilde. Ancak aynı zamanda çektiğim verileri kontrol amaçlı başka bir ip adresine göndermek istiyorum. Bir çok method denedim ancak çözüme ulaşamadım.Yardımlarınız ve önerileriniz için şimdiden teşekkürler.

-Örneğin görselde ki DurumKodu değerini başka bir sayıyla değiştirmek istiyorum.(durum.png)

9 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user samcro
samcro
17.10.2016 - 05:26

farklı ip adresine veri göndererek, insert ya da update işlemlerini yapabilirsin. aynı şuanda yaptığın select'li sorgu gibi yapabilirsin bunu. Verileri gönderirken istersen hepsini ayrı gönder, istersen android'te json oluştur json'ı gönder webservis tarafında parçala bu tamamen sana kalmış bir durum. Örnek kod olarak.

public class DBVariable {

    private String _key;
    private String _value;

    public DBVariable(String key, String value)
    {
        this._key = key;
        this._value = value;
    }

    public String GetKey()
    {
        return this._key;
    }

    public String GetValue()
    {
        return this._value;
    }
}

 

public class WebService extends AsyncTask<DBVariable, Void, String> {

    @Override
    protected String doInBackground(DBVariable... params) {
        String link = Options.link + params[0].GetValue();
        try
        {
            String data = "";
            for(int i = 1, limit = params.length; i < limit; i++) {
                if(i != 1)
                    data += "&";
                data += URLEncoder.encode(params[i].GetKey(), "UTF-8") + "=" + URLEncoder.encode(params[i].GetValue(), "UTF-8");
            }
            URL url = new URL(link);
            URLConnection conn = url.openConnection();
            if(params.length > 1) {
                conn.setDoOutput(true);
                OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
                wr.write(data);
                wr.flush();
            }
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while((line = reader.readLine()) != null)
            {
                sb.append(line);
                break;
            }
            return sb.toString();
        } catch(Exception e)
        {
            Log.e("error", e.toString());
            return "-1";
        }
    }
}

bu webservis classını selectli sorgunda da, insert update li sorgunda da kullanabilirsin. DBVariable ile key dediğim gönderdiğim alan => php'de ona göre acıyorum. value dediğim ise içindeki değer. Bu webservisi şu şekilde çağırıyorum. Asenkron class'a gönderdiğin ilk parametre ip adresi php dosyasının adı olmalı. http ile başlamalı.

  
public void MethodName(String orderID, String image)
{
            DBVariable db1 = new DBVariable("link", "ip adresi ve php dosyanın adı");
            DBVariable db2 = new DBVariable("orderid", orderID);
            DBVariable db3 = new DBVariable("image", image);
            try
            {
                new WebService().execute(db1, db2, db3).get();
            }
            catch (Exception e)
            {

            }
}

Php' de iyi değilim ama bu kod insert eder. Ve sen de android uygulamasından bir php'ye veri göndererek o da veritabanına kaydederek sorununu çözmüş olursun. PHP de böyle olmalı

 

<?php  
	error_reporting(0);
	include "include.php";
    $orderID = $_REQUEST['orderid'];
	$image = $_REQUEST['image'];
	if($baglanti)
	{
		$query = "INSERT INTO images (order_id, path) 
									VALUES ('{$orderID}', '{$image}')";
		$rs=odbc_exec($baglanti,$query); 
		if (!$rs) 
		{
			exit("Error in SQL");
		} 	
	} else echo "sa";
?>